package es.masterd.ejercicioFinal;

import android.app.Activity;
import android.content.ContentUris;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
/**
 * Actividad que muestra un lugar con los datos y la imagen
 * @author chony
 *
 */
public class MostrarLugarActivity extends Activity {
	private long id;
	private Uri myPicture = null;
	private String fotoTomada = "";
	/**
	 * Se llama cuando se crea la vista
	 * Inicializa la vista y el comportamiento de los botones
	 * @savedInstanceState Bundle Objeto con datos pasados a la vista
	 */
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.mostrarlugar);

		// comportamiento del boton que vuelve a la pantalla anterior
		Button botonVolver = (Button) findViewById(R.id.botonVolver);
		botonVolver.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				finish();
			}
		});
		// comportamiento del boton que borra el registro de la tabla
		Button botonBorrar = (Button) findViewById(R.id.botonBorrar);
		botonBorrar.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				int borrado = getContentResolver().delete(
						LugaresProvider.CONTENT_URI,
						LugaresProvider._ID + "=?", new String[] { "" + id });
				if (borrado > 0) {
					Toast.makeText(getApplicationContext(), "ELIMINADO",
							Toast.LENGTH_LONG).show();
					finish();
				} else {// el elemento no se ha podido borrar
					Toast.makeText(getApplicationContext(),
							"El lugar no se ha podido borrar",
							Toast.LENGTH_LONG).show();
					Log.e("ERROR", "No se ha podido eliminar el registro");
				}
			}
		});
		// comportamiento del boton que edita el registro de la tabla
		Button botonEditar = (Button) findViewById(R.id.botonEditar);
		botonEditar.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				Intent intent = new Intent();
				intent.putExtra(LugaresProvider._ID, id);
				intent.setClass(getApplicationContext(),
						EditarLugaresActivity.class);
				startActivity(intent);
			}
		});
	}
	/**
	 * Metodo que se llama al iniciar la vista, antes de mostrarla
	 * Recoje los datos obtenidos del Bundle que ha rellenado la vista llamante
	 * Con esos datos rellena los campos de la vista
	 */
	public void onStart() {
		super.onStart();

		try {
			Bundle extras = getIntent().getExtras();
			id = extras.getLong(LugaresProvider._ID);
			Uri uri = ContentUris.withAppendedId(
					Uri.parse(LugaresProvider.CONTENT_URI + "/#"), id);

			Cursor cursor = getContentResolver().query(uri, null, null, null,
					null);

			if ((cursor != null) && cursor.moveToFirst()) {
				fotoTomada = cursor.getString(3);
				myPicture = Uri.parse(fotoTomada);
				((TextView) findViewById(R.id.mostrar_nombre)).setText(cursor
						.getString(1));
				((TextView) findViewById(R.id.mostrar_desc)).setText(cursor
						.getString(2));
				if (!"".equals(fotoTomada))
					((ImageView) findViewById(R.id.mostrar_foto))
							.setImageURI(myPicture);
				else
					((ImageView) findViewById(R.id.mostrar_foto))
							.setImageDrawable(getResources().getDrawable(
									R.drawable.icon));
			}
		} catch (Exception e) {
			Log.e("ERROR", e.getLocalizedMessage());
		}

	}
	/**
	 * Comportamiento de la tecla ATRAS del terminal
	 * @keyCode int Codigo de la tecla pulsada
	 * @event KeyEvent Evento que ha provocado la llamada al metodo
	 */
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			Intent intent = new Intent();
			setResult(RESULT_OK, intent);
			finish();
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}
}